﻿Imports CapaDatos
Imports Entidades

Public Class Negocio
    Private misDatosCo As New Datos
    Private misDatosDes As New DatosDesconectado

    Public Function obtenerAdministrador() As Administrador
        misDatosDes.CrearDataSet()
        Return misDatosDes.obtenerAdministrador
    End Function
    Public Function añadirAdministrador(ByVal admin As Administrador) As String
        Return misDatosCo.añadirAdministrador(admin)
    End Function
    Public Function añadirCliente(ByVal cli As Cliente) As String
        Return misDatosCo.añadirCliente(cli)
    End Function
    Public Function añadirEntrega(ByVal ent As Entrega) As String
        Return misDatosCo.añadirEntrega(ent)
    End Function
    Public Function añadirUsuario(ByVal usu As Usuario) As String
        Return misDatosCo.añadirUsuario(usu)
    End Function
    Public Function añadirObjeto(ByVal obj As Objeto) As String
        Return misDatosCo.añadirObjeto(obj)
    End Function
    Public Function EntregaValorada(ByVal ent As Entrega) As String
        Return misDatosCo.EntregaValorada(ent)
    End Function
    Public Function entregasPorValorar() As List(Of Entrega)
        misDatosDes.CrearDataSet()
        Return misDatosDes.entregasPorValorar
    End Function
    Public Function detallesDeUnObjeto(ByVal codSerie As String) As Objeto
        misDatosDes.CrearDataSet()
        Return misDatosDes.detallesDeUnObjeto(codSerie)
    End Function
    Public Function obtenerTiposCliente() As List(Of TipoCliente)
        misDatosDes.CrearDataSet()
        Return misDatosDes.obtenerTiposCliente
    End Function
    Public Function objetosDeUnaEntrega(ByVal entrega As Entrega) As List(Of Objeto)
        misDatosDes.CrearDataSet()
        Return misDatosDes.objetosDeUnaEntrega(entrega)
    End Function
    Public Function obtenerFamilias() As List(Of Familia)
        misDatosDes.CrearDataSet()
        Return misDatosDes.obtenerFamilias
    End Function
    Public Function contarObjetosDeUnaFamilia(ByVal familia As Familia) As Integer
        misDatosDes.CrearDataSet()
        Return misDatosDes.contarObjetosDeUnaFamilia(familia)
    End Function
    Public Function entregasPorCliente(ByVal cli As Cliente) As List(Of Entrega)
        misDatosDes.CrearDataSet()
        Return misDatosDes.entregasPorCliente(cli)
    End Function
    Public Function clientesPorTipo(ByVal tipo As TipoCliente) As List(Of Cliente)
        misDatosDes.CrearDataSet()
        Return misDatosDes.clientesPorTipo(tipo)
    End Function
    Public Function objetosPorFamilia(ByVal fam As Familia) As List(Of Objeto)
        misDatosDes.CrearDataSet()
        Return misDatosDes.objetosPorFamilia(fam)
    End Function
    Public Function clientePorObjeto(ByVal obj As Objeto) As Cliente
        misDatosDes.CrearDataSet()
        Return misDatosDes.clientePorObjeto(obj)
    End Function
    Public Function clientePorEntrega(ByVal ent As Entrega) As Cliente
        misDatosDes.CrearDataSet()
        Return misDatosDes.clientePorEntrega(ent)
    End Function

    Public Function obtenerUsuarios() As List(Of Usuario)
        misDatosDes.CrearDataSet()
        Return misDatosDes.obtenerUsuarios
    End Function
    Public Function clientePorNombre(ByVal nombre As String) As Cliente
        misDatosDes.CrearDataSet()
        Return misDatosDes.clientePorNombre(nombre)
    End Function
    Public Function clientePorTelefonoEmail(ByVal email As String, ByVal tel As String) As Cliente
        Dim cliTel As New Cliente
        Dim cliMail As New Cliente
        cliTel = misDatosDes.clientePorTelefono(tel)
        cliMail = misDatosDes.clientePorEmail(email)
        If IsNothing(cliTel) AndAlso Not IsNothing(cliMail) Then
            Return cliMail
        End If
        If Not IsNothing(cliTel) AndAlso IsNothing(cliMail) Then
            Return cliTel
        End If

        If Not IsNothing(cliTel) AndAlso Not IsNothing(cliMail) Then
            Return cliTel
        End If

        If IsNothing(cliTel) AndAlso IsNothing(cliMail) Then
            Return Nothing
        End If
    End Function

    Public Function objetosDeUnCliente(ByVal cli As Cliente) As List(Of Objeto)
        Return misDatosDes.objetosDeUnCliente(cli)
    End Function

    Public Function ModificarObjeto(ByVal obj As Objeto, ByVal objAnt As Objeto) As String

        Return misDatosCo.ModificarObjeto(obj, objAnt)
    End Function

    Public Function ModificarCliente(ByVal cli As Cliente) As String
        Return misDatosCo.ModificarCliente(cli)
    End Function

    Public Function BorrarCliente(ByVal cli As Cliente) As String
        Return misDatosCo.BorrarCliente(cli)
    End Function
    Public Function ModificarAdministrador(ByVal admin As Administrador, ByVal adminAnt As Administrador) As String
        Return misDatosCo.ModificarAdministrador(admin, adminAnt)
    End Function
    Public Function BorrarObjetosPorFamilia(ByVal fam As Familia) As String
        Return misDatosCo.BorrarObjetosPorFamilia(fam)
    End Function
    Public Function añadirFamilia(ByVal fam As Familia) As String
        Return misDatosCo.añadirFamilia(fam)
    End Function
    Public Function BorrarClientesPorTipo(ByVal tipo As TipoCliente) As String
        Return misDatosCo.BorrarClientesPorTipo(tipo)

    End Function
    Public Function BorrarTrabajador(ByVal usu As Usuario) As String
        Return misDatosCo.BorrarTrabajador(usu)
    End Function
    Public Function BorrarFamilia(ByVal fam As Familia) As String
        Return misDatosCo.BorrarFamilia(fam)
    End Function

    Public Sub reestablecer()
        misDatosCo.BorrarObjetos()
        misDatosCo.BorrarEntregas()
        misDatosCo.BorrarUsuarios()
        misDatosCo.BorrarClientes()
        misDatosCo.BorrarAdministrador()

    End Sub


End Class
